查看原文
其他

C_C++_静态库_动态库的制作和使用

道哥 IOT物联网小镇 2022-07-15

这篇文章主要是视频教程的辅助文档,把其中的一些重要的内容放在这里,强化一下印象,更好的理解教程内容。


为什么要写这个教程?

这个应用模型是我们在开发过程中经常使用的,例如:作为一名资深程序员,你需要为公司的应用开发工程师提供一个轮子:modbus通讯库。通过阅读modus协议之后,你可以手动实现这个库,你也可以在一些第三方的开源软件(比如:libmodbus)的基础上进行简单的修改,更快速的搞定工作。


如果你选择了后面这种做法,在libmodus库的外面再包裹一层你定义的API函数就可以输出以你的名字命名的库libNB.so,然后提供给应用开发人员。



但是在你的libNB.so中一定要静态链接libmodbus库,这样就只需要提供一个libNB.so就可以了(.h头文件当然是必须的),应用开发人员就会惊叹:大牛就是大牛,这么快就搞定了!


相反地,如果你动态链接libmodbus库,这样你就得提供2个文件给应用开发人员:libmodbus.so和libNB.so,这样就暴露了你偷懒的高尚品德。

这个教程就是来演示这个编译和链接过程。

当然,也顺带着介绍一些make+Makefile, cmake, VS2017等相关知识。


视频链接

这里有相关的视频说明:

https://www.bilibili.com/video/BV19t4y1e7YD?from=search&seid=2569462564675483069


教程中包含的内容

1. Linux平台下

动态库、静态库的编译和使用;

动态库和静态库的间接使用;

使用make + Makefile 来编译/构建动态库、静态库、应用程序;

使用cmake来编译/构建动态库、静态库、应用程序。


2. Windows平台下

动态库、静态库的编译和使用;

动态库的导出机制;

使用cmake+VS2017来编译/构建动态库、静态库、应用程序。


3. 大概就是这个样子



视频演示步骤

1. Linxu平台

分别演示make + Makefile 和 cmake 来完成下面的操作:

(1)libA输出动态库,libB输出动态库,编译可执行程序。

(2)libA输出静态库,libB输出动态库,编译可执行程序。


2. Windows平台

演示用cmake得到VS项目,然后完成下面操作:

(1)libA输出动态库,libB输出动态库,编译可执行程序。

(2)libA输出静态库,libB输出动态库,编译可执行程序。

(3)你还可以自己去测试剩下的排列组合。。。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存